package thread;

import gare.Gare;

/**
 * Le rôle Thread pour accéder la gare. Le rôle Objet partagée pour que les
 * voyageurs puissent monter.
 */
public class Train extends Thread {
	
	public static int	CAPACITE_TRAIN	= 50;
	
	public static int	ARRET_TRAIN		= 15000;
	
	/**
	 * Compris entre 50 et 300
	 */
	public static int	VITESSE_TRAIN	= 300;
	
	/**
	 * 
	 * */
	private int			NbDisponible;
	
	private Gare		desination;
	
	private int			numeroTrain;
	
	public Train(int num, Gare gare) {
		numeroTrain = num;
		NbDisponible = (int) (Math.random() * CAPACITE_TRAIN);
		this.desination = gare;
		
		System.out.println(NbDisponible);
	}
	
	public void setDestination(Gare gare) {
		this.desination = gare;
	}
	
	public void run() {
		try {
			sleep(10000 / VITESSE_TRAIN);
			desination.getEspaceQuai().accueillirTrain(this);
			sleep(ARRET_TRAIN);
			desination.getEspaceQuai().sortirTrain(this);
			
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	public int getNbDisponible() {
		return NbDisponible;
	}
	
	public synchronized void monter(Voyageur voyageur) {
		NbDisponible--;
		System.out.println(voyageur.toString() + "a monté sur " + this.toString());
	}
	
	public String toString() {
		return "Train[" + numeroTrain + "]";
	}
	
}
